package jp.co.dailyReport.dailyReport.action;

import java.io.IOException;
import java.util.Calendar;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.DynaActionForm;
import jp.co.dailyReport.SystemCalendar;

/**
 * ﾒﾆｭｰページの日報リンクが押されたときの処理を管理するクラスです。
 */
public class DailyReportConditionAction extends Action {

	private static Logger log = Logger.getLogger(DailyReportConditionAction.class);

	/**
	 * ﾒﾆｭｰページの日報リンクが押されたときの処理を実行します。<BR>
	 * 日報情報、日報作業項目情報、表示している作業項目情報、表示していない作業項目情報、プロジェクト情報
	 * をセッションから削除します。<BR>
	 * DynaActionFormオブジェクトの日付フィールドに、今日の日付を設定します。
	 * 
	 * @param mapping このインスタンスを選択するために使用したActionMapping
	 * @param form 存在するならば、このリクエストのためのActionForm Bean
	 * @param request 処理しているHTTPリクエスト
	 * @param response 処理しているHTTPレスポンス
	 * @return ActionForwardインスタンス
	 * @throws IOException, ServletException
	 */
	public ActionForward execute(
		ActionMapping mapping,
		ActionForm form,
		HttpServletRequest request,
		HttpServletResponse response)
		throws IOException, ServletException {

		log.debug("DailyReportConditionAction start");
		DynaActionForm doDailyReportActionForm = (DynaActionForm) form;
		HttpSession session = request.getSession();
		log.debug("session.getId() = " + session.getId());
		session.removeAttribute("dailyReport");
		session.removeAttribute("pjWorkItemList");
		session.removeAttribute("pjDailyReportWorkItemList");
		session.removeAttribute("dailyReportWorkItem");
		session.removeAttribute("workItemList");
		session.removeAttribute("projectList");
		session.removeAttribute("nonDisplayWorkItemList");
		
		Calendar cal = Calendar.getInstance();
		doDailyReportActionForm.set("workDateY", new Integer(cal.get(Calendar.YEAR)));
		doDailyReportActionForm.set("workDateM", new Integer(cal.get(Calendar.MONTH)+1));
		doDailyReportActionForm.set("workDateD", new Integer(cal.get(Calendar.DATE)));

		request.setAttribute("systemCalendar", new SystemCalendar());
		log.debug("DailyReportConditionAction end");
		return mapping.findForward("add");
	}
}
